package com.ddxz.middleground.meta.mapper;

import com.ddxz.middleground.meta.entity.SourceEntity;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

/**
 * interface description
 *
 * @author 朱宗刚
 * @version 1.0.0
 * @date 2020/8/23
 */

@Mapper
@Repository
public interface SourceMapper {
    /**
     * 同一个用户下数据源名称不可重复
     *
     * @param userId 用户标识
     * @param name   数据源名称
     * @param tenant 租户信息
     * @return 指定用户下指定名称的出现次数
     */
    Integer getNumByUserAndName(String userId, String name, String tenant);

    /**
     * 新增数据源
     *
     * @param entity 数据源信息
     * @param tenant 租户信息
     * @return 是否保存成功
     */
    Integer saveSource(SourceEntity entity, String tenant);

    /**
     * 修改数据源信息
     *
     * @param entity 数据源信息
     * @param tenant 租户信息
     * @return 是否修改成功
     */
    Integer modifySource(SourceEntity entity, String tenant);

    /**
     * 移除数据源信息
     *
     * @param sourceId 数据源标识
     * @param tenant   租户信息
     * @return 是否移除成功
     */
    Integer removeSource(String sourceId, String tenant);

    /**
     * 以分页的形式获取数据源清单
     *
     * @param classify 数据源分类
     * @param status   数据源状态
     * @param userId   用户标识
     * @param tenant   租户信息
     * @return 数据源清单
     */
    Page<SourceEntity> getSourceList(Integer classify, Integer status, String userId, String tenant);

    /**
     * 数据源详情
     *
     * @param sourceId 数据源标识
     * @param tenant   租户信息
     * @return 数据源详情
     */
    SourceEntity getSourceDetail(String sourceId, String tenant);
}
